#ifndef __APP_UART1_H__
#define __APP_UART1_H__

#include <stdint.h>

#define UART1_RX_BUF_SIZE 4096
#define UART1_RX_MAX_SIZE 256
#define UART1_RX_FRAME_NUM 20

typedef struct
{
	uint32_t start;
	uint32_t end;
} uart1_rx_frame_t;

typedef struct
{
	uart1_rx_frame_t buf[UART1_RX_FRAME_NUM];

	uint32_t head;
	uint32_t tail;
	uint32_t remaining;
} uart1_rx_frame_queue_t;

typedef struct
{
	uint8_t buf[UART1_RX_BUF_SIZE];
	uint32_t tail;
} uart1_rx_cb_t;

extern uart1_rx_cb_t uart1_rx_cb;

void uart1_rx_start(void);
void uart1_rx_frame_enqueue(const uart1_rx_frame_t *frame);
uint8_t uart1_rx_frame_dequeue(uart1_rx_frame_t *frame);
void uart1_rx_test(void);

#endif /* __APP_UART1_H__ */